package com.rbn.stockmobiledevices.salidas;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonProperty;

import com.rbn.stockmobiledevices.clientes.Cliente;
import com.rbn.stockmobiledevices.dispositivos.Dispositivo;

@Entity
@Table(name = "ventas")
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE)
public class Venta {

	@Id
	@Column(name = "imei")
	private long imei;
	
	@ManyToOne(optional=false)
	@JoinColumn(name="codigo", nullable=false, updatable=true)
	private Dispositivo dispositivo;
	
	@Column(name = "precio_venta")
	private double precioVenta;
	
	@Column(name = "fecha_venta")
	private Date fechaVenta;
	
	@ManyToOne(optional=false)
	@JoinColumn(name="cliente", nullable=false, updatable=true)
	private Cliente cliente;
	
	@Column(name = "observacion")
	private String observacion;

	@Column(name = "pagado")
	private boolean pagado;
	
	public Venta(){
		super();
	}
	
	public Venta(long imei, Dispositivo codigo, double precioVenta, Date fechaVenta, Cliente cliente, String observacion, boolean pagado) {
		super();
		this.imei = imei;
		this.dispositivo = codigo;
		this.precioVenta = precioVenta;
		this.fechaVenta = fechaVenta;
		this.cliente = cliente;
		this.observacion=observacion;
		this.pagado = pagado;
	}
	
	@JsonProperty
	public long getImei() {
		return imei;
	}
	public void setImei(long imei) {
		this.imei = imei;
	}
	
	@JsonProperty
	public Dispositivo getDispositivo() {
		return dispositivo;
	}
	public void setDispositivo(Dispositivo dispositivo) {
		this.dispositivo = dispositivo;
	}
	
	@JsonProperty
	public double getPrecioVenta() {
		return precioVenta;
	}
	public void setPrecioVenta(double precioVenta) {
		this.precioVenta = precioVenta;
	}
	
	@JsonProperty
	public Date getFechaVenta() {
		return fechaVenta;
	}
	public void setFechaVenta(Date fechaVenta) {
		this.fechaVenta = fechaVenta;
	}
	
	@JsonProperty
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	@JsonProperty
	public String getObservacion() {
		return observacion;
	}
	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	@JsonProperty
	public boolean isPagado() {
		return pagado;
	}
	public void setPagado(boolean pagado) {
		this.pagado = pagado;
	}
}
